﻿Public Class frmBuscarDatos
    Private strTabla As String
    Private typTipo As Type
    Private strCampos() As String
    Private strOwner As String
    Private strFiltroBase As String

    Public Property tabla() As String
        Get
            Return strTabla
        End Get
        Set(ByVal value As String)
            strTabla = value
        End Set
    End Property

    Public Property tipo() As Type
        Get
            Return typTipo
        End Get
        Set(ByVal value As Type)
            typTipo = value
        End Set
    End Property

    Public Property campos() As String()
        Get
            Return strCampos
        End Get
        Set(ByVal value As String())
            strCampos = value
        End Set
    End Property

    Public Sub traerDatos(Optional ByVal strId As String = "")
        Dim objGestorBuscarDatos As Laboratorio_Negocio.GestorBuscarDatos = New Laboratorio_Negocio.GestorBuscarDatos

        'Busco los campos de la tabla
        Dim objListaFiltro As List(Of Laboratorio_Negocio.Filtros)
        objListaFiltro = objGestorBuscarDatos.getFiltros()
        cmbFiltro.DisplayMember = "nombre"
        cmbFiltro.ValueMember = "idFiltro"
        cmbFiltro.DataSource = objListaFiltro

        'busco los campos de la tabla
        Dim strMatriz() As String
        strMatriz = objGestorBuscarDatos.getCampos(strTabla)
        cmbCampo.DataSource = strMatriz
        cmbCampo.SelectedIndex() = 0

        Me.campos = strMatriz
        If strId <> "" Then
            strFiltroBase = strId
        End If
        Me.getDatos(strId)
    End Sub

    Public Sub getDatos(Optional ByVal strId As String = "")
        ' Busco los datos de la tabla
        Dim objGestorBuscarDatos As Laboratorio_Negocio.GestorBuscarDatos = New Laboratorio_Negocio.GestorBuscarDatos
        Dim objListaGenerica As List(Of Object)
        If strId = "" Then
            If strFiltroBase = "" Then
                objListaGenerica = objGestorBuscarDatos.buscarDatos(strTabla, typTipo)
            Else
                strId = strFiltroBase
                objListaGenerica = objGestorBuscarDatos.buscarDatos(strTabla, typTipo, strId)
            End If
        Else
            objListaGenerica = objGestorBuscarDatos.buscarDatos(strTabla, typTipo, strId)
        End If
            grdGrilla.DataSource = objListaGenerica
    End Sub

    Private Sub btnRomperFiltro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRomperFiltro.Click
        Me.getDatos()
    End Sub

    Private Sub frmBuscarDatos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Me.Owner.Enabled = False
    End Sub

    Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
        ' armo el filtro
        Dim strFiltro As String
        'Dim strIndex As String

        strFiltro = cmbCampo.SelectedItem.ToString.ToUpper

        Dim objFiltro As Laboratorio_Negocio.Filtros = New Laboratorio_Negocio.Filtros
        objFiltro.idFiltro = cmbFiltro.SelectedValue.ToString
        Dim objGestorFiltros As Laboratorio_Negocio.GestorFiltros = New Laboratorio_Negocio.GestorFiltros
        objGestorFiltros.getFiltro(objFiltro)

        strFiltro = strFiltro & " " & objFiltro.sqlComienza & Me.txtValor.Text.ToUpper & objFiltro.sqlTermina

        If strFiltroBase <> "" Then
            strFiltro = strFiltro & "AND " & strFiltroBase
        End If
        Dim objGestorBuscarDatos As Laboratorio_Negocio.GestorBuscarDatos = New Laboratorio_Negocio.GestorBuscarDatos
        Dim objListaGenerica As List(Of Object)
        objListaGenerica = objGestorBuscarDatos.buscarDatos(Me.tabla, Me.tipo, strFiltro)
        grdGrilla.DataSource = objListaGenerica
    End Sub

    Private Sub grdGrilla_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdGrilla.DoubleClick
        If grdGrilla.RowCount = 0 Then
            Exit Sub
        End If
        Dim strId As String
        Select Case typTipo.ToString
            Case "Laboratorio_Negocio.CapaDeNegocio.PlanProtocolo"
                strId = Me.grdGrilla.Rows(Me.grdGrilla.SelectedRows.Item(0).Index).Cells(4).Value.ToString
            Case "Laboratorio_Negocio.CapaDeNegocio.Etapa"
                strId = Me.grdGrilla.Rows(Me.grdGrilla.SelectedRows.Item(0).Index).Cells(5).Value.ToString

            Case Else
                strId = Me.grdGrilla.Rows(Me.grdGrilla.SelectedRows.Item(0).Index).Cells(5).Value.ToString
        End Select
        setearOrigen(strId)
        Me.Owner.Enabled = True
        Me.Finalize()
        Me.Close()
    End Sub

    Protected Overrides Sub Finalize()
        Me.Owner.Enabled = True
        MyBase.Finalize()
    End Sub

    Private Sub setearOrigen(ByVal strId As String)
        Dim strNombre As String
        strNombre = Me.Owner.Name

        Select Case strNombre
            Case "frmGestionWeeks"
                Select Case typTipo.ToString
                    Case "Laboratorio_Negocio.CapaDeNegocio.PlanProtocolo"
                        frmGestionWeeks.setProtoclo(strId)
                        Exit Sub
                    Case "Laboratorio_Negocio.CapaDeNegocio.Etapa"
                        frmGestionWeeks.setEtapa(strId, frmGestionWeeks.strIdProtocolo)
                End Select
            Case "frmGestionPacientes"
                Select Case typTipo.ToString
                    Case "Laboratorio_Negocio.CapaDeNegocio.TipoDocumento"
                        frmGestionPacientes.setTipoDoc(strId)
                End Select
        End Select
    End Sub

End Class